package banco;

import DAO.Usuario;
import beans.Professor;
import com.mysql.jdbc.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.text.SimpleDateFormat;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author 
 */
public class UsuarioDAO {
    
    private Usuario usuario;
    private ConexaoBD conexao;
    ArrayList<Usuario> usuarios = new ArrayList<Usuario>();
    public Statement statement;

    public UsuarioDAO(ConexaoBD conexao) {
        this.conexao = conexao;
    }

    public UsuarioDAO() {
    }

      public Usuario getUsuariosFromLoginSenha(String login, String senha) throws SQLException {

        String SQL_string = "SELECT * FROM cadastro WHERE login LIKE'%" + login + "'";


        ResultSet rs = conexao.executeSql(SQL_string);
        rs.first();

            String nome = rs.getString("login");
            
            System.out.println("Senha armazenada:" + rs.getString("senha"));
            System.out.println("Senha digitada:" + senha);


            if (senha.equals(rs.getString("senha"))) {
                return new Usuario(nome,login,senha);
            } else {
                return null;
            }

    }

      public void setProfessor(String nome, String rg, String cpf, String ativo, String banco, String agencia,
              String conta_corrente, String nivel, String carga_horaria, String titulo, String email, String uf, String cidade, String cep,
              String endereco,String matricula, String pis_paseb, String fone, String celular, String admissao, String dataexoneracao, String rj, String classe) throws SQLException{

          System.out.println("Entrou no metodo!");

        String SQL_string = "INSERT INTO professor (nome, RG, CPF, ativo, banco, agencia, contacorrente, nivel, cargahoraria, titulo, email, uf, cidade, cep, endereco, matricula, PIS_PASEB, fone, celular, admissao, dataexoneracao, rj, classe) VALUES ('" + nome + "'," + "'" + rg + "'," + "'" + cpf + "'," + "'" + ativo + "'," + "'" + banco + "'," + "'" + agencia + "'," + "'" + conta_corrente + "',"
                + "'" + nivel + "'," + "'" + carga_horaria + "'," + "'" + titulo + "'," + "'" + email + "'," + "'" + uf + "'," + "'" + cidade + "'," + "'" + cep + "'," + "'" + endereco + "'," + "'" + matricula + "'," + "'" + pis_paseb + "', "
                + "'" + fone + "'," + "'" + celular + "'," + "'" + admissao + "'," + "'" + dataexoneracao + "', " + "'" + rj + "', " + "'" + classe + "'" +  ")";
          System.out.println(SQL_string);
       conexao.execute(SQL_string);
            
      }

     public void setAfastamento(String nome, String portaria, String motivo, String substituto, String periodo) throws SQLException{

        String SQL_string = "INSERT INTO afastamento (nome, portaria, motivo, substituto, periodo) VALUES ('" + nome + "'," + "'" + portaria + "'," + "'" + motivo + "'," + "'" + substituto + "'," + "'" + periodo + "'" +  ")";
         
       conexao.execute(SQL_string);

      }

      public void setLicenca(String professorRG, String periodo) throws SQLException{

        String SQL_string = "INSERT INTO licencapremio (nome, portaria, motivo, substituto, periodo) VALUES ('" + professorRG + "'," + "'" + periodo + "'" + ")";

       conexao.execute(SQL_string);

      }

      public Professor[] getObjProfessor() throws SQLException{

          String SQL_string = "SELECT * FROM professor";

          int cont = 0;

          ResultSet consulta = conexao.executeSql(SQL_string);

          consulta.last();
          cont = consulta.getRow();

          Professor resultados[] = new Professor[cont+1];

          consulta.first();

          SimpleDateFormat in = new SimpleDateFormat("EEE, d, MMM, yyyy");

          for(int i = 1; i <= cont; i ++){

              if(i != cont){

                  Professor professor = new Professor();
                try {
                    professor.setAdmissao(in.parse(consulta.getString("admissao")));
                } catch (ParseException ex) {
                    Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
                  professor.setNome(consulta.getString("Nome"));
                  professor.setTitulo(consulta.getString("titulo"));

                  resultados[i] = professor;
                  consulta.next();
              }
              else {

                  Professor professor = new Professor();
                try {
                    professor.setAdmissao(in.parse(consulta.getString("admissao")));
                } catch (ParseException ex) {
                    Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
                  professor.setNome(consulta.getString("Nome"));
                  professor.setTitulo(consulta.getString("titulo"));

                  resultados[i] = professor;
              }
          }
          return resultados;
      }

      public Professor[] getProfessor(String nome, String opcao) throws SQLException{
          
          String SQL_string = "SELECT * FROM professor WHERE " + opcao + " LIKE'%" + nome + "'";

          int cont = 0;

          ResultSet consulta = conexao.executeSql(SQL_string);

          consulta.last();
          cont = consulta.getRow();

          Professor resultados[] = new Professor[cont+1];
          
          consulta.first();

          SimpleDateFormat in = new SimpleDateFormat("EEE, d, MMM, yyyy");

          for(int i = 1; i <= cont; i ++){

              if(i != cont){

                  Professor professor = new Professor();                 
                try {
                    professor.setAdmissao(in.parse(consulta.getString("admissao")));
                } catch (ParseException ex) {
                    Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
                  professor.setNome(consulta.getString("Nome"));
                  professor.setTitulo(consulta.getString("titulo"));

                  resultados[i] = professor;
                  consulta.next();
              }
              else {                                    

                  Professor professor = new Professor();
                try {
                    professor.setAdmissao(in.parse(consulta.getString("admissao")));
                } catch (ParseException ex) {
                    Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
                  professor.setNome(consulta.getString("Nome"));
                  professor.setTitulo(consulta.getString("titulo"));

                  resultados[i] = professor;
              }
          }                              
          return resultados;
      }

      public String[][] getProfessorsNames() throws SQLException{

          String SQL_string = "SELECT Nome, RG FROM professor ORDER by Nome asc";

          int cont = 0;

          ResultSet consulta = conexao.executeSql(SQL_string);

          consulta.last();
          cont = consulta.getRow();

          String[][] resultado = new String[cont+1][2];

          consulta.first();
          
           for(int i = 1; i <= cont; i ++){

              if(i != cont){

//                  Professor professor = new Professor();
//
//                  professor.setNome(consulta.getString("Nome"));
                  resultado[i][0] = consulta.getString("Nome");
                  resultado[i][1] = consulta.getString("RG");
                  consulta.next();
              }
              else {

//                  Professor professor = new Professor();
//
//                  professor.setNome(consulta.getString("Nome"));
                  resultado[i][0] = consulta.getString("Nome");
                  resultado[i][1] = consulta.getString("RG");
              }
          }

          return resultado;
      }
}
